package com.chao.tlias.util;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;
import java.util.Map;

/**
 * JWT令牌工具类
 */
public class JwtUtils {
    // 签名密钥
    private static final String SECRET_KEY = "aXRDaGFv";
    // 令牌过期时间（毫秒，1小时）1个小时
    private static final long EXPIRATION_TIME = 3600 * 1000;

    /**
     * 生成JWT令牌
     * @param claims 自定义内容（载荷）
     * @return 生成的令牌字符串
     */
    public static String generateToken(Map<String, Object> claims) {
        return Jwts.builder()
                .signWith(SignatureAlgorithm.HS256, SECRET_KEY) // 指定签名算法和密钥
                .setClaims(claims) // 设置自定义内容
                .setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME)) // 设置过期时间
                .compact(); // 生成令牌
    }

    /**
     * 解析JWT令牌
     * @param token 待解析的令牌字符串
     * @return 解析后的Claims对象（包含载荷内容）
     */
    public static Claims parseToken(String token) {
        return Jwts.parser()
                .setSigningKey(SECRET_KEY) // 指定签名密钥
                .parseClaimsJws(token) // 解析令牌
                .getBody(); // 获取载荷内容
    }


}